package com.yh.patterns.singleton.demo3;

/**
 * @Auther:云尚学Java
 *
 * 懒汉式： 线程安全
 */
public class Singleton {

    //1.私有构造方法
    private Singleton(){}

    //2.声明Singleton类型的变量instance
    private static  Singleton instance;  //只是声明了该类型的变量，并没有进行赋值

    //3.对外提供访问方式
    public static synchronized Singleton getInstance(){
        //判断instance是否为null，如果为null，说明还没有创建Singleton类的对象
        //如果没有创建一个并返回，如果有直接返回即可
        if(instance==null){
            //线程1等待，线程2获取到CPU的执行权，也会进入到该判断里面
            instance=new Singleton();
        }
        return instance;
    }
}
